function getItemAttrs(){
	var itemAttrs = {
		'supplier': {
			'label': '软件供应商',
			'type': 'select'
		},
		'device': {
			'label': '设备类型',
			'type': 'select'
		},
		'area': {
			'label': '软件线路分类',
			'type': 'select'
		},
		'type': {
			'label': '软件类型',
			'type': 'select'
		},
		'softname': {
			'label': '软件文件名称',
			'type': 'text'
		},
		'beforevision': {
			'label': '升级前版本',
			'type': 'text'
		},
		'aftervision': {
			'label': '升级后版本',
			'type': 'text'
		},
		'downloadtime1': {
			'label': '软件开始下载时间',
			'type': 'date'
		},
		'downloadtime2': {
			'label': '软件完成下载时间',
			'type': 'date'
		},
		'finish': {
			'label': '是否完成下载',
			'type': 'radio'
		},
		'back': {
			'label': '回退',
			'type': 'radio'
		},
		'responsible': {
			'label': '回退责任方',
			'type': 'radio'
		},
		'explain': {
			'label': '软件修改问题说明',
			'type': 'textarea'
		},
		'problem': {
			'label': '下载后出现问题',
			'type': 'textarea'
		},
		'remark': {
			'label': '回退备注',
			'type': 'textarea'
		}
	}
	return itemAttrs;
}

function createAddForms(options, data) {
	var itemAttrs = getItemAttrs();
	var form = $('<form/>', {
		'class': 'form add-form'
	});
	var count = 0;
	for (var key in itemAttrs) {
		var formGroup = $('<div/>', {
			'class': 'form-group col-xs-4'
		});
		var label = $('<label/>', {
			'for': 'form-' + key,
			'text': itemAttrs[key]['label']
		});
		var inputType = itemAttrs[key]['type'];
		var input = $('<input/>', {
				'type': inputType,
				'class': 'form-control',
				'id': 'form-' + key,
				'name':'form-' + key
			});
		switch (inputType) {
			case 'select':
				input = $('<input/>', {
						'type': 'text',
						'width': '256px',
						'class': 'form-control easyui-combobox',
						'id': 'form-' + key,
						'name':'form-' + key
					});
				var dataCombo = [];
				for (var i = 0, l = options[key].length; i < l; i++) {
					var dataItem = {
						'value': options[key][i],
						'text': options[key][i]
					};
					dataCombo.push(dataItem);
				}
				formGroup.append(label).append(input);
				input.combobox({
					'data': dataCombo
				});
				if (data) {
					input.combobox('select', data[key]);
				};
				break;
			case 'date':
				input.attr('type', 'text');
				if (data) {
					input.val(data[key]);
				};
				input.datepicker({
					changeMonth: true,
					changeYear: true,
					constrainInput: true,
					dateFormat: "yy-mm-dd",
					duration: 'fast',
					hideIfNoPrevNext: true,
					monthNamesShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
					dayNamesMin: ['日', '一', '二', '三', '四', '五', '六'],
					selectOtherMonths: true,
					showAnim: 'fadeIn',
					showOtherMonths: true,
					showWeek: false,
					yearSuffix: ''
				});
				formGroup.append(label).append(input);
				break;
			case 'radio':
				var radioLabel = $('<label/>', {
					'text': itemAttrs[key]['label']
				});
				var radios = $('<div/>', {
					'class': 'form-inline'
				});
				var radio1 = $('<div/>', {
					'class': 'radio col-xs-2'
				});
				var radio0 = $('<div/>', {
					'class': 'radio col-xs-2'
				});
				var label1 = $('<label/>', {
					'text': '是'
				});
				var label0 = $('<label/>', {
					'text': '否'
				});
				var input1 = $('<input/>', {
					'type': inputType,
					'name': 'form-' + key,
					'id': 'form-' + key + '1',
					'value': 1
				});
				var input0 = $('<input/>', {
					'type': inputType,
					'name': 'form-' + key,
					'id': 'form-' + key + '0',
					'value': 0
				});
				if (data) {
					if (data[key] == 1) {
						input1.attr('checked', 'checked');
					} else {
						input0.attr('checked', 'checked');
					};
				};
				radio1.append(label1.prepend(input1));
				radio0.append(label0.prepend(input0));
				radios.append(radio1).append(radio0);
				formGroup.append(radioLabel).append(radios);
				break;
			case 'textarea':
				input = $('<textarea>', {
					'class': 'form-control',
					'id': 'form-' + key,
					'name':'form-' + key
				});
				if (data) {
					input.val(data[key]);
				};
				formGroup.attr('class', 'form-group col-xs-12').append(label).append(input);
				break;
			default:
				if (data) {
					input.val(data[key]);
				};
				formGroup.append(label).append(input);
		}
		form.append(formGroup);
		if((++count) % 3 === 0) {
			form.append('<div class="clearfix"></div>');
		}
	}
	return form;
}

function createDetailForm(data) {
	var itemAttrs = getItemAttrs();
	var form = $('<div/>', {
		'class': 'detail-form'
	});
	for (var key in itemAttrs) {
		var dataBlock = $('<div/>', {
			'class': 'col-md-4'
		});
		var head = $('<label/>', {
			'text': itemAttrs[key]['label']
		});
		var content = $('<p/>', {
			'text': data[key]
		});
		if (itemAttrs[key]['type'] == 'radio') {
			content.text(data[key] == '1'? '是' : '否');
		} else if ((itemAttrs[key]['type'] == 'textarea')){
			dataBlock.attr('class', 'col-xs-12');
		};
		dataBlock.append(head).append(content);
		form.append(dataBlock);
	}
	return form;
}

function itemHandler(action, id) {
	action = action || 'add';
	var text = "";
	$('#dialog-submit').off('click');
	if (action == 'add') {
		text = "添加记录";
		if ($('#dialog-modal-body').find('.add-form').length == 0) {
			$.get('/software/get_options', function(options){
				var form = createAddForms(options);
				$('#dialog-modal-body').empty().append(form);
			}, 'json');
		};
		$('#dialog-submit').on('click', function() {
			var itemAttrs = getItemAttrs();
			var oQuery = {};
			for(var key in itemAttrs) {
				if (itemAttrs[key]['type'] == 'radio') {
					oQuery[key] = $('[name="form-' + key + '"]:checked').val();
				} else {
					oQuery[key] = $('[name="form-' + key + '"]').val();
				};
			}
			$.post('/software/add_software_version_data', oQuery, function(result) {
				if (result.status == 1) {
					$('#dialog-modal-body').empty();
					getList();
				} else {
					alert('添加失败');
				};
			}, 'json');
		});
	} else if(action == 'update') {
		text = "修改记录";
		var oQuery = {
			'id': id
		};
		var optionsReturn = false;
		var dataReturn = false;
		var options = undefined;
		var data = undefined;
		$.get('/software/get_options', function(result){
			if (dataReturn) {
				var form = createAddForms(result, data);
				$('#dialog-modal-body').empty().append(form);
			} else {
				options = result;
				optionsReturn = true;
			}
		}, 'json');
		$.get('/software/get_software_version_item', oQuery, function(result){
			if (optionsReturn) {
				var form = createAddForms(options, result);
				$('#dialog-modal-body').empty().append(form);
			} else {
				data = result;
				dataReturn = true;
			};
		}, 'json');
		$('#dialog-submit').on('click', function() {
			var itemAttrs = getItemAttrs();
			var oQuery = {
				'id': id
			};
			for(var key in itemAttrs) {
				if (itemAttrs[key]['type'] == 'radio') {
					oQuery[key] = $('[name="form-' + key + '"]:checked').val();
				} else {
					oQuery[key] = $('[name="form-' + key + '"]').val();
				};
			}
			$.post('/software/update_software_version_data', oQuery, function(result) {
				if (result.status == 1) {
					$('#dialog-modal-body').empty();
					getList();
				} else {
					alert('添加失败');
				};
			}, 'json');
		});
	} else if(action == 'detail') {
		text = "详细记录";
		getItem(id);
	} else if(action == 'delete') {
		text = "删除记录";
		$('#dialog-modal-body').empty().append('<p>确定删除？</p>');
		$('#dialog-submit').on('click', function() {
			deleteItem(id);
		});
	} else {

	};
	$('#dialog-modal-title').text(text);
	$('#dialog-modal').modal('show');
}

function deleteItem(id) {
	var oQuery = {
		'id': id
	}
	$.post('/software/delete_software_version_item', oQuery, function(result) {
		if (result.status == 1) {
			getList();
		} else {
			alert('删除不成功');
		};
	}, 'json')
}

function updateItem() {
}

function getList() {
	var filters = $('.filter-option');
	var oQuery = {};
	for(var i = 0, l = filters.length; i < l; i++){
		if ($(filters[i]).val() != '') {
			oQuery[$(filters[i]).data('filter')] = $(filters[i]).val();
		};
	}
	$('#version-list tbody').empty();
	$.get('/software/get_software_version_data', oQuery, function(result){
		for(var i = 0, l = result.data.length; i < l; i++) {
			var tr = createTableRow(result.data[i]);
			$('#version-list tbody').append(tr);
		}
		$('#version-list').tablesorter();
	}, 'json');
}

function getItem(id) {
	var oQuery = {
		'id': id
	};
	$.get('/software/get_software_version_item', oQuery, function(result){
		var form = createDetailForm(result);
		$('#dialog-modal-body').empty().append(form);
	}, 'json');
}

function createTableRow(dataArray) {
	var tr = $('<tr/>');
	for(var i = 0, l = dataArray.length; i <= l; i++) {
		var td = $('<td/>');
		if (i == 0) {
			td.text(dataArray[i]).addClass('hide');
		} else if(i == 5) {
			td.text(dataArray[i] == '1'? '是' : '否');
		} else if(i == l) {
			var itemID = dataArray[0];
			var updateBtn = $('<a/>', {
				'href':'javascript:itemHandler("update", ' + itemID + ')',
				'text': '修改'
			});
			var detailBtn = $('<a/>', {
				'href':'javascript:itemHandler("detail", ' + itemID + ')',
				'text': '详细'
			});
			var deleteBtn = $('<a/>', {
				'href':'javascript:itemHandler("delete", ' + itemID + ')',
				'text': '删除'
			});
			td.append(updateBtn).append('｜').append(detailBtn).append('｜').append(deleteBtn);
		} else {
			td.text(dataArray[i]);
		};
		tr.append(td);
	}
	return tr;
}


$(function() {
	// 日期控件
	$('#from-date, #to-date').datepicker({
		changeMonth: true,
		changeYear: true,
		constrainInput: true,
		dateFormat: "yy-mm-dd",
		duration: 'fast',
		hideIfNoPrevNext: true,
		monthNamesShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
		dayNamesMin: ['日', '一', '二', '三', '四', '五', '六'],
		selectOtherMonths: true,
		showAnim: 'fadeIn',
		showOtherMonths: true,
		showWeek: false,
		yearSuffix: ''
	});

	// 读取列表
	getList();

	// 新增记录
	$('#add-item').click(function() {
		itemHandler('add');
	});

	// 提交筛选条件
	$('#filter-submit').click(function() {
		getList();
	});

	theadFixed($('#version-list'));

});